// Symbol 补充

// 唯一性

// for 方法，相同的Symbol返回相同类型的值
// 为字符串和Symbol 提供字符串和 Symbol 一一对应的关系
// const s1 = Symbol.for('foo')
// const s2 = Symbol.for('foo')
// console.log(s1 === s2)

// 如果传入参数不是字符串，会自动转化为字符串
// console.log(
//   Symbol.for(true) === Symbol.for('true')
// )

// console.log(Symbol.iterator)
// console.log(Symbol.hasInstance)

// const obj = {
//   [Symbol.toStringTag]: 'XObject'
// }
// console.log(obj.toString())

const obj = {
  [Symbol()]: 'symbol value',
  foo: 'normal value'
}

// // 下列两种方法无法获取symbol类型属性名
// for(let key in obj) console.log(key)
// console.log(Object.keys(obj))
// console.log(JSON.stringify(obj))

// // 所以Symbol特别适合作为对象的私有属性

console.log(Object.getOwnPropertySymbols(obj))